package com.tlx.util;

import org.apache.commons.lang.StringUtils;

public class ConvertStringUtils {
    public static void main(String[] args) {

        String QJstr = "ｈｅｌｌｏ送发124,.，。，。，fdsg但是根深蒂固,,.,.,;';??";
        System.out.println(normalConvert(QJstr));
        ;
    }

    // 字母转半角，符号转全角
    public static String normalConvert(String input) {
        input = punctuation2Full(input);// 标点转全角
        input = letter2Half(input);// 字母、数字转半角
        return input;
    }

    /**
     * 半角转全角（标点）
     * 
     * @param input
     *            String.
     * @return 全角字符串.
     */
    public static String punctuation2Full(String input) {
        input = StringUtils.replace(input, "\"", "＂");
        input = StringUtils.replace(input, "'", "＇");
        input = StringUtils.replace(input, "(", "（");
        input = StringUtils.replace(input, ")", "）");
        input = StringUtils.replace(input, ":", "：");
        input = StringUtils.replace(input, ";", "；");

        input = StringUtils.replace(input, ".", "。");
        input = StringUtils.replace(input, ",", "，");
        input = StringUtils.replace(input, "?", "？");

        return input;
    }

    /**
     * 全角转半角（字母和数字）
     * 
     * @param input
     *            String.
     * @return 半角字符串
     */
    public static String letter2Half(String input) {

        char c[] = input.toCharArray();

        for (int k = 0; k < c.length; k++) {

            if (c[k] == '\u3000') {
                c[k] = ' ';
            }

            if (c[k] >= '０' && c[k] <= '９') {
                c[k] = (char) (c[k] - 65248);

            }

            if (c[k] >= 'Ａ' && c[k] <= 'Ｚ') {
                c[k] = (char) (c[k] - 65248);

            }
            if (c[k] >= 'ａ' && c[k] <= 'ｚ') {
                c[k] = (char) (c[k] - 65248);
            }

        }

        String returnString = new String(c);

        return returnString;
    }
}
